package com.ruoyi.system.domain.bo;

import cn.hutool.core.util.NumberUtil;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.io.Serializable;
import java.math.BigDecimal;


/**
 * 提现配置
 *
 * @author siashan
 * @date 2024-02-23
 */
@Data
@ToString
@EqualsAndHashCode
@NoArgsConstructor
public class WithdrawSetting implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 最低提现金额
     */
    private BigDecimal min = BigDecimal.ZERO;

    /**
     * 最高提现金额
     *
     * @apiNote -1 代表不限制
     */
    private BigDecimal max = BigDecimal.valueOf(-1);

    /**
     * 提现手续费
     *
     * @apiNote ex: 5‰
     */
    private BigDecimal fee = BigDecimal.ZERO;


    /**
     * 是否需要审核
     */
    private boolean auditEnable;


    public void check() {
        // 校验最低提现金额
        if (min.compareTo(BigDecimal.ZERO) < 0) {
            throw new IllegalArgumentException("最小提现金额不能小于0");
        }
        // 校验最高提现金额
        if (max.compareTo(BigDecimal.ZERO) > 0) {
            if (max.compareTo(min) < 0) {
                throw new IllegalArgumentException("最高提现金额不能小于最小提现金额");
            }
        }
        // 校验手续费
        if (fee.compareTo(BigDecimal.ZERO) < 0) {
            throw new IllegalArgumentException("提现手续费不能小于0");
        }
        if (fee.compareTo(BigDecimal.valueOf(999)) > 0) {
            throw new IllegalArgumentException("提现手续费不能大于999");
        }
    }


    public BigDecimal getRadio() {
        return NumberUtil.div(fee, 1000);
    }
}
